package cn.lg.soar.common.data;

import cn.lg.soar.common.util.data.DataUtil;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Map;

/**
 * @author luguoxiang
 * @date 2022/6/13
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface MapPlus<K> extends Map<K, Object> {

    /**
     * 获取 String 类型值
     * @param key 键
     * @return
     */
    default String getString(K key) {
        return DataUtil.toString(get(key));
    }

    /**
     * 获取 Character 类型值
     * @param key 键
     * @return
     */
    default Character getCharacter(K key) {
        return DataUtil.toCharacter(get(key));
    }

    /**
     * 获取 Boolean 类型值
     * @param key 键
     * @return
     */
    default Boolean getBoolean(K key) {
        return DataUtil.toBoolean(get(key));
    }

    /**
     * 获取 Long 类型值
     * @param key 键
     * @return
     */
    default Long getLong(K key) {
        return DataUtil.toLong(get(key));
    }

    /**
     * 获取 Integer 类型值
     * @param key 键
     * @return
     */
    default Integer getInteger(K key) {
        return DataUtil.toInteger(get(key));
    }

    /**
     * 获取 Short 类型值
     * @param key 键
     * @return
     */
    default Short getShort(K key) {
        return DataUtil.toShort(get(key));
    }

    /**
     * 获取 Byte 类型值
     * @param key 键
     * @return
     */
    default Byte getByte(K key) {
        return DataUtil.toByte(get(key));
    }

    /**
     * 获取 Float 类型值
     * @param key 键
     * @return
     */
    default Float getFloat(K key) {
        return DataUtil.toFloat(get(key));
    }

    /**
     * 获取 getDouble 类型值
     * @param key 键
     * @return
     */
    default Double getDouble(K key) {
        return DataUtil.toDouble(get(key));
    }

    /**
     * 获取 BigDecimal 类型值
     * @param key 键
     * @return
     */
    default BigDecimal getBigDecimal(K key) {
        return DataUtil.toBigDecimal(get(key));
    }

    /**
     * 获取 BigInteger 类型值
     * @param key 键
     * @return
     */
    default BigInteger getBigInteger(K key) {
        return DataUtil.toBigInteger(get(key));
    }


}
